Small executable.el fix related to bug#9879.
authorGlenn Morris <rgm@gnu.org>
Mon, 14 Nov 2011 02:14:01 +0000 (18:14 -0800)
committerGlenn Morris <rgm@gnu.org>
Mon, 14 Nov 2011 02:14:01 +0000 (18:14 -0800)
* lisp/progmodes/executable.el
(executable-make-buffer-file-executable-if-script-p):
Handle file-modes returning nil.

lisp/ChangeLog
lisp/progmodes/executable.el

index 13dcafe26468d6386a4223aea1ee2d45ba0a0dd4..c3e054acc1f97101f4b6dbb1975143c9c5c6eb5c 100644 (file)
@@ -1,5 +1,9 @@
 2011-11-14  Glenn Morris  <rgm@gnu.org>
 
+       * progmodes/executable.el
+       (executable-make-buffer-file-executable-if-script-p):
+       Handle file-modes returning nil.
+
        * mail/rmail.el (rmail-no-mail-p): Remove mode-line N/M indicator.
 
        * mail/rmailsum.el (rmail-summary, rmail-new-summary)
index d8133cb6b901326288384a540863c25d651574f8..281fa3cef728437c1f3a4468194e071e3b17d4cb 100644 (file)
@@ -268,12 +268,16 @@ file modes."
        (save-restriction
         (widen)
         (string= "#!" (buffer-substring (point-min) (+ 2 (point-min)))))
-       (let* ((current-mode (file-modes (buffer-file-name)))
-              (add-mode (logand ?\111 (default-file-modes))))
-         (or (/= (logand ?\111 current-mode) 0)
-             (zerop add-mode)
-             (set-file-modes (buffer-file-name)
-                             (logior current-mode add-mode))))))
+       (condition-case nil
+           (let* ((current-mode (file-modes (buffer-file-name)))
+                  (add-mode (logand ?\111 (default-file-modes))))
+             (or (/= (logand ?\111 current-mode) 0)
+                 (zerop add-mode)
+                 (set-file-modes (buffer-file-name)
+                                 (logior current-mode add-mode))))
+         ;; Eg file-modes can return nil (bug#9879).  It should not,
+         ;; in this context, but we should handle it all the same.
+         (error (message "Unable to make file executable")))))
 
 (provide 'executable)